package org.apache.commons.tfs;

import java.util.Date;

public interface Licence {
	
	public static final String MSG_NOT_FOUND = "未找到授权文件！";
	public static final String MSG_UNVALID = "授权文件无效！";
	public static final String MSG_EXPIRY = "授权文件已过期！";
	public static final String MSG_HARDWARE = "当前服务器未授权！";
	public static final String MSG_USER = "系统用户数已到达授权数量！";

	/**
	 * 授权是否生效
	 * @return
	 * @throws LicenseException，授权不存在等情况下抛出
	 */
	public boolean validate();
	
	/**
	 * 获得当前错误信息
	 * @return 如果授权是有效，则返回null
	 */
	public String getErrorMessage();
	
	/**
	 * 是否正式版本
	 * @return
	 */
	public boolean isFormalType();
	
	/** 获得产品名称 */
	public String getName();
	
	/** 获得产品编码 */
	public String getCode();
	
	/** 获得版本 */
	public String getVersion();
	
	/** 获得版本类型 */
	public VersionType getVersionType();
	
	/** 获得版权信息 */
	public String getCopyright();
	
	/**
	 * 获得授权日期
	 * @return
	 */
	public Date getSign();
	
	/**
	 * 被授权单位
	 * @return
	 */
	public String getUnit();
	
	/**
	 * 获得授权的主板序列号
	 * @return 如果无限制，返回null
	 */
	public String getBoard();
	
	/**
	 * 获得授权的CPU序列号
	 * @return 如果无限制，返回null，多个以逗号分隔
	 */
	public String getCpus();
	
	/**
	 * 获得授权的硬盘序列号
	 * @return	如果无限制，返回null，多个以逗号分隔
	 */
	public String getDisks();
	
	/**
	 * 获得授权的MAC地址
	 * @return 如果无限制，返回null，多个以逗号分隔
	 */
	public String getMacs();
		
	/**
	 * 获得到期时间
	 * @return 如果无限制，返回null
	 */
	public Date getExpiry();
	
	/**
	 * 获得用户数限制
	 * @return 如果无限制，返回0
	 */
	public int getUserLimit();
}
